class Solution(object):
    def letterCasePermutation(self, s):
        # 存储所有可能的结果
        result = []
        
        def dfs(index, path):
            # 当处理完所有字符时，将当前路径加入结果集
            if index == len(s):
                result.append(path)
                return
            
            # 当前字符
            char = s[index]
            
            # 如果是字母，尝试两种情况：大写和小写
            if char.isalpha():
                # 小写情况
                dfs(index + 1, path + char.lower())
                # 大写情况
                dfs(index + 1, path + char.upper())
            else:
                # 如果是数字，直接加入路径
                dfs(index + 1, path + char)
        
        # 从空路径开始DFS
        dfs(0, "")
        return result
        